 #include <sys/types.h>
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #include <stdio.h>
 #include <sys/sem.h>
 #include <string.h>
 #include <unistd.h>
 #include <errno.h>
 
 #include "sm_shm.h"
 


 void *InitSegmentMemoire(char *fic, char code, int taille)
 {
	key_t cle;
	int shmid;
	void *ptr = NULL;


	cle = ftok(fic, code);
	
	if (cle == -1)
	{
		perror("SHM : Problème de création de clé\n\n");
		exit(0);
	}

	shmid = shmget(cle, sizeof(taille), IPC_CREAT|0666);
	
	if (shmid == -1)
	{
		perror("SHM : Problème d'ouverture du shmget\n\n");
		exit(0);
	}

	ptr = shmat (shmid, NULL, 0);

	/* si l'adressage mémoire sur 32 bits, remplacer long par int */
	if ((long)ptr == -1)
	{
		perror("SHM : Problème d'attachement\n\n");
		exit(0);
	}
	return ptr;
}
